/**
 * Copyright (C) 2021 - 2031 O-Cubes Co., Ltd.
 */

/****************************************************************
 *  @file    device_gpio.h
 *  @brief   Designware gpio device header file
 *  @version v1.0
 *  @date    03. Apr. 2023
 *  @author  liuchao
 ****************************************************************/

#ifndef __DEVICE_GPIO_H__
#define __DEVICE_GPIO_H__

#include "dev_gpio.h"

/**
 * Designware GPIO0 Port Bank Control Macros
 */
#define USE_DW_GPIO_PORT_A              1
#define USE_DW_GPIO_PORT_B              1
#define USE_DW_GPIO_PORT_C              1
#define USE_DW_GPIO_PORT_D              1

/**
 * Designware GPIO0 Port Interrupt Available Number Macros
 */
#define GPIO_A_INT_MAX_COUNT            32
#define GPIO_B_INT_MAX_COUNT            0
#define GPIO_C_INT_MAX_COUNT            0
#define GPIO_D_INT_MAX_COUNT            0

/**
 * Designware GPIO Port Available Bits Macros
 */
#define GPIO_A_VALID_MASK         DW_GPIO_MASK_ALL
#define GPIO_B_VALID_MASK         DW_GPIO_MASK_ALL
#define GPIO_C_VALID_MASK         DW_GPIO_MASK_ALL
#define GPIO_D_VALID_MASK         DW_GPIO_MASK_ALL

#ifdef __cplusplus
extern "C" {
#endif

enum gpio_dev_obj_t {
	eGPIO_DEV_OBJ_0,
};

enum gpio_port_obj_t {
	eGPIO_PORT_OBJ_A,
	eGPIO_PORT_OBJ_B,
	eGPIO_PORT_OBJ_C,
	eGPIO_PORT_OBJ_D,
	eGPIO_PORT_MAX
};

DEV_GPIO_PTR gpio_get_dev(int32_t dev, int32_t port);

#ifdef __cplusplus
}
#endif


#endif /* __DEVICE_GPIO_H__ */
